package com.zhouheng.springbootmultithreading.tuling.hashMap.threadpool;


import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class ScheduledThreadPoolExecutorExample {

    public static void main(String[] args) {
        ScheduledThreadPoolExecutor executor = (ScheduledThreadPoolExecutor) Executors.newScheduledThreadPool(5);
        Task task = new Task("任务");
        System.out.println("Created : " + task.getName());
        // 1.单延迟，非周期性任务
//        executor.schedule(task, 2, TimeUnit.SECONDS);
        // 2.任务+延迟 = 任务执行时间 + 固定延迟时间   任务5秒+延迟2秒 = 7秒执行一次
//        executor.scheduleWithFixedDelay(task, 0, 2, TimeUnit.SECONDS);
        // 3.任延迟取最大值 稳定定时器 period周期，如果任务执行时间比周期时间大时，执行完后立即执行下一次，否则按固定的周期执行
        executor.scheduleAtFixedRate(task, 0, 6, TimeUnit.SECONDS);
    }
}

